//
//  SGHttpTool.h
//  post
//
//  Created by liu chao on 15/10/8.
//  Copyright (c) 2015年 liu chao. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "SGParameter.h"
#import "AFNetworking.h"

/** 请求成功的Block */
typedef void(^HttpRequestSuccess)(id responseObject);

/** 请求失败的Block */
typedef void(^HttpRequestFailed)(NSError *error);

/** 数据修改的Block */
typedef void(^HttpRequestModified)(id responseCache);

/** 缓存的Block */
typedef void(^HttpRequestCache)(id responseCache);

/** 上传或者下载的进度, Progress.completedUnitCount:当前大小 - Progress.totalUnitCount:总大小*/
typedef void (^HttpProgress)(NSProgress *progress);


@interface SGHttpTool : NSObject

//使用OtherNetworking 中url 带参数的 post请求
+ (void)POST:(SGParameter *)parameter
      sucess:(HttpRequestSuccess)success
     failure:(HttpRequestFailed)failure;

//有url有参数的 post请求
+ (void)POST:(NSString *)url
   parameter:(SGParameter *)parameter
      sucess:(HttpRequestSuccess)success
     failure:(HttpRequestFailed)failure;

//有url无参数的 post请求
+ (void)POSTURL:(NSString *)url
         sucess:(HttpRequestSuccess)success
        failure:(HttpRequestFailed)failure;




/**
 *  POST 请求, 无修改、无缓存
 *
 *  @param parameter  请求参数
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 *
 *  @return 返回的对象可取消请求,调用cancel方法
 */
+ (__kindof NSURLSessionTask *)post:(SGParameter *)parameter
                             sucess:(HttpRequestSuccess)success
                            failure:(HttpRequestFailed)failure;

/**
 *  POST 请求, 无修改、无缓存 OtherNetworking url
 *
 *  @param parameter  请求参数
 *  @param modified   修改的回调
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 *
 *  @return 返回的对象可取消请求,调用cancel方法
 */
+ (__kindof NSURLSessionTask *)post:(SGParameter *)parameter
                           modified:(HttpRequestModified)modified
                             sucess:(HttpRequestSuccess)success
                            failure:(HttpRequestFailed)failure;

/**
 *  POST 请求, 无修改、无缓存
 *
 *  @param parameter  请求参数
 *  @param modified   修改的回调
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 *
 *  @return 返回的对象可取消请求,调用cancel方法
 */
+ (__kindof NSURLSessionTask *)post:(SGParameter *)parameter
                           modified:(HttpRequestModified)modified
                              cache:(HttpRequestCache)cache
                             sucess:(HttpRequestSuccess)success
                            failure:(HttpRequestFailed)failure;




@end
